import {Cache} from './Queue.js';
/**
 *  
 * 固定长度的队列
 * 读取位置需要在队列外部控制
 *  
 */
export var QQueue = {   
    //类变量和方法
    createNew: function (缓存长度) {
        //定义私有变量
        //定义对象内部方法
        var self =Queue.createNew(缓存长度);         
        self.add = function (a) {
            self.a缓存.push(a);//插入数据到数组的末尾
            self.i缓存长度++;
            if (self.i缓存长度 > self.i最大缓存) {
                self.i缓存长度 = self.i最大缓存;
                self.a缓存.shift();//超出了就扔掉数组中0下标元素,也就是最早的数据             
            }
        };
        /**
         * 读一条记录
         */
        self.read1 = function (读取位置) {
            let v = self.a缓存[读取位置];
            读取位置++; //下一次的读取位置
            return {msg:v,next:读取位置};
        };
        /**
         * 连续读取数据到缓存末尾
         */
        self.read2end = function (读取位置) {
            let v = self.a缓存.slice(读取位置)
            return {msg:v,next:self.i缓存长度};//下一次的读取位置
        };
        /**
         * 从 n位置读取到m位置
         * @param {*} n 
         * @param {*} m 
         */
        self.readnstart = function (n, m) {
            n = (n == null || n < 0) ? 0 : n;
            m = (m == null || m > self.i缓存长度) ? self.i缓存长度 : m;
            let v = self.a缓存.slice(n, m)
            return  {msg:v,next:m};
        };       
        return self;
    }
};
